import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  // 根据不同的mode设置不同的配置
  const isProduction = mode === 'production'
  const isNginxDeploy = mode === 'nginx' // 新增nginx部署模式
  
  return {
    plugins: [vue()],
    // 根据不同环境设置不同的base路径
    // 开发环境使用根路径，nginx部署模式使用monitor子目录
    base: isNginxDeploy ? '/monitor/' : '/',
    resolve: {
      alias: {
        '@': '/src'
      }
    },
    server: {
      open: true,
      port: 10002,
      host: '0.0.0.0',
      cors: true,
      allowedHosts: true,
      // 开发环境代理配置，代理API请求到后端
      proxy: {
        '/api': {
          target: 'http://localhost:10001',
          changeOrigin: true,
          secure: false
        }
      }
    },
    build: {
      // 生产环境构建配置
      outDir: 'dist',
      assetsDir: 'assets',
      // 生产环境关闭源码映射以减小文件大小
      sourcemap: false,
      // 代码分割配置
      rollupOptions: {
        output: {
          // 静态资源分类存放
          chunkFileNames: 'assets/js/[name]-[hash].js',
          entryFileNames: 'assets/js/[name]-[hash].js',
          assetFileNames: 'assets/[ext]/[name]-[hash].[ext]'
        }
      },
      // 压缩配置
      minify: 'terser',
      terserOptions: {
        compress: {
          // 移除console.log
          drop_console: isProduction,
          drop_debugger: isProduction
        }
      },
      // 构建时是否生成报告
      reportCompressedSize: false
    },
    // 根据mode设置不同的环境变量
    define: {
      __MODE__: JSON.stringify(mode),
      __PROD__: isProduction,
      __DEV__: !isProduction
    }
  }
})